# !/usr/bin python3
# encoding: utf-8 -*-
# @file     : client.py
# @author   : 沙陌 Matongxue_2
# @Time     : 2023/12/28 20:03
# @Copyright: 北京码同学
import mimetypes
import os

import requests

from common.logger import GetLogger


class RequestsClient:

    session = requests.session()
    # 要发起一个接口的调用，需要用到很多信息，所以在这里进行定义
    def __init__(self):
        self.url = None
        self.method = None
        self.headers = None
        self.params = None
        self.data = None
        self.json = None
        self.files = None
        self.resp = None

    def send(self):
        # 发起之前记录请求信息
        GetLogger.get_logger().debug("================================================")
        GetLogger.get_logger().debug(f'接口url:{self.url}')
        GetLogger.get_logger().debug(f'接口method:{self.method}')
        GetLogger.get_logger().debug(f'接口headers:{self.headers}')
        GetLogger.get_logger().debug(f'接口params:{self.params}')
        GetLogger.get_logger().debug(f'接口data:{self.data}')
        GetLogger.get_logger().debug(f'接口json:{self.json}')
        if self.files:
            # 提取file参数做进一步处理
            file_path = self.files['file']
            filename = os.path.basename(file_path)
            file_type = mimetypes.guess_type(filename)[0]
            self.files['file'] = (filename,open(file=file_path,mode='rb'),file_type)
        GetLogger.get_logger().debug(f'接口files:{self.files}')
        try:
            # verify=False 该参数表示忽略https的证书校验
            self.resp = RequestsClient.session.request(
                method=self.method,
                url=self.url,
                headers=self.headers,
                params=self.params,
                data=self.data,
                json=self.json,
                files=self.files,
                verify=False
            )
            GetLogger.get_logger().debug(f'接口响应状态码:{self.resp.status_code}')
            GetLogger.get_logger().debug(f'接口响应body:{self.resp.text}')
        except BaseException as e:
            GetLogger.get_logger().exception('接口发起失败')
            raise BaseException(f'接口发起失败:{e}')
        return self.resp